package com.atguigu.tingshu.album.client;

import com.atguigu.tingshu.album.client.impl.AlbumInfoDegradeFeignClient;
import com.atguigu.tingshu.common.result.Result;
import com.atguigu.tingshu.model.album.AlbumAttributeValue;
import com.atguigu.tingshu.model.album.AlbumInfo;
import com.atguigu.tingshu.model.album.TrackInfo;
import com.atguigu.tingshu.vo.album.AlbumStatVo;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;

import java.util.List;

/**
 * <p>
 * 产品列表API接口
 * </p>
 *
 * @author qy
 */
@FeignClient(value = "service-album", fallback = AlbumInfoDegradeFeignClient.class)
public interface AlbumInfoFeignClient {
    /**
     * 根据id获取专辑
     * @author Petrichor
     * @date 2023/12/21 22:41
     * @param id 专辑id
     * @return  AlbumInfo 返回专辑信息
     **/
    @GetMapping("/api/album/albumInfo/getAlbumInfo/{id}")
    public Result<AlbumInfo> getAlbumInfo(@PathVariable(value = "id") Long id);
    /**
     * @description: 根据专辑id查询专辑属性值
     * @author Petrichor
     * @date 2023/12/26 20:18
     * @param albumId 专辑id
     * @return  AlbumAttributeValue 专辑属性值
     * album_atribute_value
     **/
    @GetMapping(value = "/api/album/albumInfo/findAlbumAttributeValue/{albumId}")
    public Result<List<AlbumAttributeValue>> findAlbumAttributeValueByAlbumId(@PathVariable(value = "albumId") Long albumId);
    /**
     * 根据专辑的id查询专辑的统计数据
     * @author Petrichor
     * @date 2023/12/26 21:15
     * @param albumId 专辑id
     * @return AlbumStatVo专辑的统计数据
    **/
    @GetMapping(value = "/api/album/albumInfo/findAlbumStatByAlbumId/{albumId}")
    public Result<AlbumStatVo> findAlbumStatByAlbumId(@PathVariable(value = "albumId") Long albumId) ;

    /**
     * @description: 批量获取下单付费声音列表
     * @author Petrichor
     * @date 2024/1/7 22:28
     * @param trackId 声音id
     * @param trackCount 购买集数
     * @return 购买的声音列表
     **/
    @GetMapping("/api/album/albumInfo/findPaidTrackInfoList/{trackId}/{trackCount}")
    public Result<List<TrackInfo>> findPaidTrackInfoList(@PathVariable Long trackId, @PathVariable Integer trackCount);
}